package com.wmb.controller;

import com.wmb.bean.UserInfoBean;
import com.wmb.service.UserService;
import com.wmb.utils.MyUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;


@Controller
public class UserController {

    // 依赖注入
    @Resource
    //需要创建setter方法
    //这里注入的是接口，不是对应的实现类，会自动创建对象，下方可以直接调用
    private UserService userService;

    @Resource
    HttpServletRequest request;


    ///////////////////////////////////////////页面跳转的不同方式///////////////////////////////////////////
    //进行页面的登录操作（连接给定的页面，并跳转到指定的页面）
    //@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上
    @RequestMapping("/login")
    //请求方法返回String类型
    //@RequestParam("index页面的name"):若传递的参数不与index页面中的变量名一致时，用@RequestParam("username")注解代替不一样的变量名 userPsw
    public String doLogin(@RequestParam("username") String userName, @RequestParam("userpsw") String userPsw) {
        System.out.println("正在进行登录操作:" + userName + ";密码：" + userPsw);
        // 返回的视图的路径：WEB-INF/pages/logined.jsp
        // 通过springmvc的视图解析器：会自动附加 前缀 /WEB-INF/pages/ 和后缀 .jsp，所以只需要返回中间部分即可；
        //跳转到登录成功的页面
        return "logined";
    }


    //对静态资源(页面的跳转)的跳转
    /**
     * 通过后台进行跳转处理
     *
     * @param pg 跳转的静态页面名字
     * @return 静态页面
     */
    //用于向静态页面跳转
    @RequestMapping("/jump")
    public String jump(String pg) {
        return pg;
    }


    @RequestMapping("/addAndUpdateUserInfo")
    //@RequestParam("username") MultipartFile multipartFile:将前台页面上传的文件对象映射到multipartFile对象上（接收页面传入的字节流）
    public String addAndUpdateUserInfo(UserInfoBean userInfoBean, @RequestParam("file_userimg") MultipartFile multipartFile) {

        System.out.println("userInfobean::::");
        System.out.println(userInfoBean);


    ///////////////////////////使用文件上传的公共方法进行文件上传处理//////////////////////////////////////
        //直接给该方法传入自定的参数
        MyUtils.doSingleFileUpload(multipartFile,"uploadfiles", "userimg", userInfoBean, "userimg");


        // 调用service层进行业务逻辑处理
        int i = userService.addAndUpdateUserInfo(userInfoBean);

        if (i > 0) {
            // 保存成功
            return "userInfo/UserInfoAddDetail";
        } else {
            // 保存失败
            return "userInfo/UserInfoAdd";
        }
    }

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}
